home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-1.iso / Files / Educ / Calc / MathPad 2.35.sit / XFuns / XFun kit / callback.h < prev    next >
Encoding:
Text File  |  1995-04-23  |  5.0 KB  |  113 lines  |  [TEXT/KAHL]

  1. typedef short BOOL;
  2. typedef BOOL (*funptr) ();
  3. typedef struct expr    *EXPR;
  4.  
  5. /* ---------- control routines ---------------------------- */
  6.  
  7. extern void AddXfun(char *name,char *parms,funptr entry,void (*predef)(),funptr callback);
  8.   /* Install a new function. */
  9.  
  10. extern void AddFunDim(char *name,long lim,funptr callback);
  11.   /* Setup routine to allow the XFun to return values based on the array index.
  12.    This routine must be called by the predef routine. It can be called multiple times
  13.    to set up a multidimensional return value. Array index values are appended to the
  14.    parameter list */
  15.  
  16. extern void ErrMsg(char *fmt,char *str,funptr callback);
  17.   /* Show an error message in the status line.
  18.     fmt is a printf() format string. str is an optional parameter
  19.     Sets stop flag to tell MathPad to stop all evaluation. */
  20.  
  21. extern BOOL Stopped(funptr callback);
  22.   /* Check value of stop flag to see if evaluation should be stopped. */
  23.  
  24. extern void SpinWatch(funptr callback);
  25.   /* Allow a computation to be switched to background or stopped via command period.
  26.    Stopped() must be checked to see if command period was hit.
  27.    SpinWatch() should be called at least twice per second.
  28.    It can be called at a much higher rate without much loss. */
  29.  
  30. extern void SetPlotPICT(PicHandle thePic,funptr callback);
  31.   /* Replace any pasted PICT with thePic. Allows XFun to place graphics on the plot */
  32.  
  33.  
  34. /* ------------- function parameter access ---------------- */
  35. /* Parameters are numbered from right to left starting at 0 */
  36.  
  37. extern BOOL GetParmVal(long n,extended *num,funptr callback);
  38.   /* Get the value of a simple numeric parameter.
  39.    Returns false if the value is an array or undefined */
  40.  
  41. extern void MakeParmExpr(long n,EXPR *xpr,funptr callback);
  42.   /* Make a parameter expression. (Used to access arrays).
  43.    The expression must be deallocated with FreeExpr(xpr). */
  44.  
  45. extern BOOL GetParmName(long n,char **name,funptr callback);
  46.   /* Get a name parameter. (Used to get a filename or other string).
  47.     Returns false if the parameter was an expression or defined variable */
  48.  
  49.  
  50.  
  51. /* ------------------ global variable access ---------------- */
  52.  
  53. extern BOOL GetVarVal(char *name,extended *num,funptr callback);
  54.   /* Evaluate the named global variable.
  55.     Returns false if the value is an array or undefined */
  56.  
  57. extern void GetVarString(char *name,char **str,funptr callback);
  58.   /* Returns the string value of a named global variable.
  59.     Returns an empty string if unless the variable was set to a string */
  60.  
  61. extern void MakeVarExpr(char *name,EXPR *xpr,funptr callback);
  62.   /* Make a global variable expression. (Used to access arrays).
  63.    The expression must be deallocated with FreeExpr(xpr). */
  64.  
  65. extern BOOL SetVarVal(char *name,extended num,funptr callback);
  66.   /* Assign a single value to the named global variable.
  67.      Returns false if the variable is an illegal destination. */
  68.  
  69. extern BOOL SetVarMatrix(char *name,extended *arr,long rows,long cols,funptr callback);
  70.   /* Assign a 1D or 2D array to the named global variable. 
  71.      Returns false if the variable is an illegal destination.
  72.      The array must be allocated via NewPtr() and will be deallocated by MathPad. */
  73.  
  74. extern void FoldVar(char *name,long lim,funptr callback);
  75.   /* Add a dimension to the variable set by SetVarMatrix(). Can be called multiple
  76.      times to create more dimensions. */
  77.  
  78.  
  79.  
  80. /* ------------ general expression routines ----------------- */
  81.  
  82. extern BOOL GetExprMatrix(EXPR xpr,extended **mat,long *rows,long *cols,funptr callback);
  83.   /* Allocate memory and evaluate all elements of a 1D or 2D matrix expression into memory.
  84.    Returns a pointer to the matrix in mat.
  85.    A scalar will return cols=0 and rows=0. A 1D array will return cols=0.
  86.    An array with more than 2 dimensions will generate an error message and return false.
  87.    The matrix allocated by GetExprMatrix() should be deallocated with DisposPtr() */
  88.  
  89. extern BOOL ProbeExpr(EXPR xpr,extended *num,BOOL *isarray,long *count,funptr callback);
  90.   /* Find out if an expression is a scalar or an array.
  91.    If scalar, returns true and sets num.
  92.    If array, returns false and sets isarray and count. A count of 0 means infinite array.
  93.    If the return value and isarray are both false the expression was undefined. */
  94.  
  95. extern void AddIndex(EXPR *xpr,extended **iptr,funptr callback);
  96.   /* Add an index to allow evaluating individual array elements.
  97.    The extended at iptr can be modified to index through the array.
  98.    To access a single element, an index must be added for each dimension of the array. */
  99.  
  100. extern void RemoveIndex(EXPR *xpr,funptr callback);
  101.   /* Remove an index. RemoveIndex() should only be used on an expression that was previously
  102.   modified by AddIndex(). Normally FreeExpr() is be used to free the entire expression so
  103.   this call is not required. */
  104.  
  105. extern BOOL EvalExpr(EXPR xpr,extended *num,funptr callback);
  106.   /* Evaluate an expression. Returns false if xpr is an array or undefined */
  107.  
  108. extern void FreeExpr(EXPR xpr,funptr callback);
  109.   /* Free memory allocated to an expression.
  110.    Use to deallocate from MakeParmExpr() or MakeVarExpr() */
  111.  
  112.  
  113.